package com.study.lihan.letcode.offer;

import java.util.HashSet;

/**
 * @Author: lihan
 * @Date : 2022/9/23- 09
 * @DESCRIPTION: 输入一个字符串数组words，请计算不包含相同字符的两个字符串words[i]和words[j]的长度乘积的最大值。
 * 如果所有字符串都包含至少一个相同字符，那么返回0。假设字符串中只包含英文小写字母。
 * 例如，输入的字符串数组words为["abcw"，"foo"，"bar"，"fxyz"，"abcdef"]，数组中的字符串"bar"与"foo"没有相同的字符，
 * 它们长度的乘积为9。"abcw"与"fxyz"也没有相同的字符，它们长度的乘积为16，这是该数组不包含相同字符的一对字符串的长度乘积的最大值
 * @version: 1.0
 */
public class T5 {
    public static void main(String[] args) {
        String[] strs = {"abcw","baz","foo","bar","xtfn","abcdef"};
        System.out.println(getMax(strs));

    }

    public static  int getMax(String[] words){
        int max = 0;
        int len = words.length;
        for (int i = 0; i < len -1 ; i++) {
            String fisrtStr = words[i];
            boolean[] flags = new boolean[26];
            for (int j= 0; j <fisrtStr.length(); j++){
                flags[fisrtStr.charAt(j) - 'a'] = true;
            }
            for (int j = i + 1; j < len; j++ ){
                String secStr = words[j];
                boolean needMulti = true;
                for (int z= 0; z < secStr.length(); z++){
                    int curIndex = secStr.charAt(z) - 'a';
                    if (flags[curIndex]){
                        needMulti = false;
                        break;
                    }
                }
                if (needMulti && (max < fisrtStr.length() * secStr.length())){
                    max = fisrtStr.length() * secStr.length();
                }
            }

        }
        return max;
    }
}
